perm filename TST.LSP[206,LSP]  blob 
sn#309910 filedate 1977-10-07 generic text, type T, neo UTF8
 
;        foo u ← foo1[u, NIL, NIL]
;        foo1[u, atoms, nonatoms] ←  
;          if n u then reverse nonatoms * atoms 
;          else if at a u then foo1[d u, a u . atoms, nonatoms] 
;          else foo1[d u, atoms, a u . nonatoms]
;        footwo u ← selectcar[u, ATOM] * selectcar[u, NOTATOM]
;        selectcar[u, p] ←  
;          if n u then NIL 
;          else if p a u then a u . selectcar[d u, p] 
;          else selectcar[d u, p]
;        notatom u ← ¬at u
;        prod[u, v] ←  
;          if n u then NIL else polysum[scalprod[a u, v], 0 . prod[d u, v]]
;        scalprod[s, l] ← if n l then NIL else times[s, a l] . scalprod[s, d l]
;        polysum[u, v] ←  
;          if n u then v else if n v then u else a u + a v . polysum[d u, d v]
;        elem1[e, l] ←  
;          if n l then e else if A = a l then a elem1[e, d l] else d elem1[e, d l]
;        elem2[e, l] ←  
;          if n l then e else if A = a l then elem2[a e, d l] else elem2[d e, d l]
;        locations[e, u] ← loc1[e, u, NIL]
;        loc1[expr, space, path] ←  
;          if expr = space then <path> 
;          else if at space then NIL 
;          else loc1[expr, a space, A . path] * loc1[expr, d space, D . path]
;        commons u ← commons1[collectsubexprs u, u, NIL]
;        commons1[exprlist, u, results] ←  
;          if n exprlist then reverse results 
;          else commons1[ 
;            d exprlist,  
;            u,  
;            if a exprlist ε d exprlist ∧ n assoc[a exprlist, results] then  
;              [a exprlist . locations[a exprlist, u]] . results 
;             else results]
;        collectsubexprs u ←  
;          if at u then NIL 
;          else a u . collectsubexprs a u * d u . collectsubexprs d u
;        commontwo u ← cummuns[commall[u, NIL], NIL]
;        commall[u, path] ←  
;          if at u then <<u, path>> 
;          else <<u, path>> * commall[a u, A . path] * commall[d u, D . path]
;        cummuns[biglist, results] ←  
;          if n biglist then results 
;          else if assoc[aa biglist, results] ∨ ¬assoc[aa biglist, d biglist] then  
;            cummuns[d biglist, results] 
;          else cummuns[ 
;            d biglist, results * <aa biglist . collectall[aa biglist, biglist]>]
;        collectall[expr, source] ←  
;          if n source then NIL 
;          else if expr = aa source then ada source . collectall[expr, d source] 
;          else collectall[expr, d source]